package pe.gob.mpfn.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.el.ELContext;
import javax.el.ExpressionFactory;
import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.component.html.HtmlPanelGrid;
import javax.faces.context.FacesContext;
import javax.faces.convert.DateTimeConverter;
import javax.faces.validator.LengthValidator;
import org.primefaces.component.autocomplete.AutoComplete;
import org.primefaces.component.calendar.Calendar;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.component.inputtextarea.InputTextarea;
import org.primefaces.component.message.Message;
import org.primefaces.context.RequestContext;
import org.primefaces.event.CloseEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.roo.addon.jsf.managedbean.RooJsfManagedBean;
import org.springframework.roo.addon.serializable.RooSerializable;
import pe.gob.mpfn.controller.converter.PersonalConverter;
import pe.gob.mpfn.controller.converter.ProteccionConverter;
import pe.gob.mpfn.model.DesarrolloProteccion;
import pe.gob.mpfn.model.Personal;
import pe.gob.mpfn.model.Proteccion;
import pe.gob.mpfn.service.DesarrolloProteccionService;
import pe.gob.mpfn.service.PersonalService;
import pe.gob.mpfn.service.ProteccionService;

@Configurable
@ManagedBean(name = "desarrolloProteccionBean")
@SessionScoped
@RooSerializable
@RooJsfManagedBean(entity = DesarrolloProteccion.class, beanName = "desarrolloProteccionBean")
public class DesarrolloProteccionBean implements Serializable  {

	private static final long serialVersionUID = 1L;

	@Autowired
    DesarrolloProteccionService desarrolloProteccionService;

	@Autowired
    PersonalService personalService;

	@Autowired
    ProteccionService proteccionService;

	private String name = "DesarrolloProteccions";

	private DesarrolloProteccion desarrolloProteccion;

	private List<DesarrolloProteccion> allDesarrolloProteccions;

	private boolean dataVisible = false;

	private List<String> columns;

	private HtmlPanelGrid createPanelGrid;

	private HtmlPanelGrid editPanelGrid;

	private HtmlPanelGrid viewPanelGrid;

	private boolean createDialogVisible = false;

	@PostConstruct
    public void init() {
        columns = new ArrayList<String>();
        columns.add("strDescripcion");
        columns.add("datFechaRegistro");
        columns.add("chrEstado");
        columns.add("desarrolloProteccioncol");
    }

	public String getName() {
        return name;
    }

	public List<String> getColumns() {
        return columns;
    }

	public List<DesarrolloProteccion> getAllDesarrolloProteccions() {
        return allDesarrolloProteccions;
    }

	public void setAllDesarrolloProteccions(List<DesarrolloProteccion> allDesarrolloProteccions) {
        this.allDesarrolloProteccions = allDesarrolloProteccions;
    }

	public String findAllDesarrolloProteccions() {
        allDesarrolloProteccions = desarrolloProteccionService.findAllDesarrolloProteccions();
        dataVisible = !allDesarrolloProteccions.isEmpty();
        return null;
    }

	public boolean isDataVisible() {
        return dataVisible;
    }

	public void setDataVisible(boolean dataVisible) {
        this.dataVisible = dataVisible;
    }

	public HtmlPanelGrid getCreatePanelGrid() {
        if (createPanelGrid == null) {
            createPanelGrid = populateCreatePanel();
        }
        return createPanelGrid;
    }

	public void setCreatePanelGrid(HtmlPanelGrid createPanelGrid) {
        this.createPanelGrid = createPanelGrid;
    }

	public HtmlPanelGrid getEditPanelGrid() {
        if (editPanelGrid == null) {
            editPanelGrid = populateEditPanel();
        }
        return editPanelGrid;
    }

	public void setEditPanelGrid(HtmlPanelGrid editPanelGrid) {
        this.editPanelGrid = editPanelGrid;
    }

	public HtmlPanelGrid getViewPanelGrid() {
        if (viewPanelGrid == null) {
            viewPanelGrid = populateViewPanel();
        }
        return viewPanelGrid;
    }

	public void setViewPanelGrid(HtmlPanelGrid viewPanelGrid) {
        this.viewPanelGrid = viewPanelGrid;
    }

	public HtmlPanelGrid populateCreatePanel() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        Application application = facesContext.getApplication();
        ExpressionFactory expressionFactory = application.getExpressionFactory();
        ELContext elContext = facesContext.getELContext();
        
        HtmlPanelGrid htmlPanelGrid = (HtmlPanelGrid) application.createComponent(HtmlPanelGrid.COMPONENT_TYPE);
        
        HtmlOutputText intPersonalIdCreateOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        intPersonalIdCreateOutput.setId("intPersonalIdCreateOutput");
        intPersonalIdCreateOutput.setValue("Int Personal Id:   ");
        htmlPanelGrid.getChildren().add(intPersonalIdCreateOutput);
        
        AutoComplete intPersonalIdCreateInput = (AutoComplete) application.createComponent(AutoComplete.COMPONENT_TYPE);
        intPersonalIdCreateInput.setId("intPersonalIdCreateInput");
        intPersonalIdCreateInput.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.intPersonalId}", Personal.class));
        intPersonalIdCreateInput.setCompleteMethod(expressionFactory.createMethodExpression(elContext, "#{desarrolloProteccionBean.completeIntPersonalId}", List.class, new Class[] { String.class }));
        intPersonalIdCreateInput.setDropdown(true);
        intPersonalIdCreateInput.setValueExpression("var", expressionFactory.createValueExpression(elContext, "intPersonalId", String.class));
        intPersonalIdCreateInput.setValueExpression("itemLabel", expressionFactory.createValueExpression(elContext, "#{intPersonalId.strNombre} #{intPersonalId.strApellidoPaterno} #{intPersonalId.strApellidoMaterno} #{intPersonalId.strUsuario}", String.class));
        intPersonalIdCreateInput.setValueExpression("itemValue", expressionFactory.createValueExpression(elContext, "#{intPersonalId}", Personal.class));
        intPersonalIdCreateInput.setConverter(new PersonalConverter());
        intPersonalIdCreateInput.setRequired(false);
        htmlPanelGrid.getChildren().add(intPersonalIdCreateInput);
        
        Message intPersonalIdCreateInputMessage = (Message) application.createComponent(Message.COMPONENT_TYPE);
        intPersonalIdCreateInputMessage.setId("intPersonalIdCreateInputMessage");
        intPersonalIdCreateInputMessage.setFor("intPersonalIdCreateInput");
        intPersonalIdCreateInputMessage.setDisplay("icon");
        htmlPanelGrid.getChildren().add(intPersonalIdCreateInputMessage);
        
        HtmlOutputText intProteccionIdCreateOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        intProteccionIdCreateOutput.setId("intProteccionIdCreateOutput");
        intProteccionIdCreateOutput.setValue("Int Proteccion Id:   ");
        htmlPanelGrid.getChildren().add(intProteccionIdCreateOutput);
        
        AutoComplete intProteccionIdCreateInput = (AutoComplete) application.createComponent(AutoComplete.COMPONENT_TYPE);
        intProteccionIdCreateInput.setId("intProteccionIdCreateInput");
        intProteccionIdCreateInput.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.intProteccionId}", Proteccion.class));
        intProteccionIdCreateInput.setCompleteMethod(expressionFactory.createMethodExpression(elContext, "#{desarrolloProteccionBean.completeIntProteccionId}", List.class, new Class[] { String.class }));
        intProteccionIdCreateInput.setDropdown(true);
        intProteccionIdCreateInput.setValueExpression("var", expressionFactory.createValueExpression(elContext, "intProteccionId", String.class));
        intProteccionIdCreateInput.setValueExpression("itemLabel", expressionFactory.createValueExpression(elContext, "#{intProteccionId.datFechaInicio} #{intProteccionId.datFechaFin} #{intProteccionId.strObservaciones} #{intProteccionId.chrEstado}", String.class));
        intProteccionIdCreateInput.setValueExpression("itemValue", expressionFactory.createValueExpression(elContext, "#{intProteccionId}", Proteccion.class));
        intProteccionIdCreateInput.setConverter(new ProteccionConverter());
        intProteccionIdCreateInput.setRequired(false);
        htmlPanelGrid.getChildren().add(intProteccionIdCreateInput);
        
        Message intProteccionIdCreateInputMessage = (Message) application.createComponent(Message.COMPONENT_TYPE);
        intProteccionIdCreateInputMessage.setId("intProteccionIdCreateInputMessage");
        intProteccionIdCreateInputMessage.setFor("intProteccionIdCreateInput");
        intProteccionIdCreateInputMessage.setDisplay("icon");
        htmlPanelGrid.getChildren().add(intProteccionIdCreateInputMessage);
        
        HtmlOutputText strDescripcionCreateOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        strDescripcionCreateOutput.setId("strDescripcionCreateOutput");
        strDescripcionCreateOutput.setValue("Str Descripcion: * ");
        htmlPanelGrid.getChildren().add(strDescripcionCreateOutput);
        
        InputTextarea strDescripcionCreateInput = (InputTextarea) application.createComponent(InputTextarea.COMPONENT_TYPE);
        strDescripcionCreateInput.setId("strDescripcionCreateInput");
        strDescripcionCreateInput.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.strDescripcion}", String.class));
        LengthValidator strDescripcionCreateInputValidator = new LengthValidator();
        strDescripcionCreateInputValidator.setMaximum(200);
        strDescripcionCreateInput.addValidator(strDescripcionCreateInputValidator);
        strDescripcionCreateInput.setRequired(true);
        htmlPanelGrid.getChildren().add(strDescripcionCreateInput);
        
        Message strDescripcionCreateInputMessage = (Message) application.createComponent(Message.COMPONENT_TYPE);
        strDescripcionCreateInputMessage.setId("strDescripcionCreateInputMessage");
        strDescripcionCreateInputMessage.setFor("strDescripcionCreateInput");
        strDescripcionCreateInputMessage.setDisplay("icon");
        htmlPanelGrid.getChildren().add(strDescripcionCreateInputMessage);
        
        HtmlOutputText datFechaRegistroCreateOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        datFechaRegistroCreateOutput.setId("datFechaRegistroCreateOutput");
        datFechaRegistroCreateOutput.setValue("Dat Fecha Registro: * ");
        htmlPanelGrid.getChildren().add(datFechaRegistroCreateOutput);
        
        Calendar datFechaRegistroCreateInput = (Calendar) application.createComponent(Calendar.COMPONENT_TYPE);
        datFechaRegistroCreateInput.setId("datFechaRegistroCreateInput");
        datFechaRegistroCreateInput.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.datFechaRegistro}", Date.class));
        datFechaRegistroCreateInput.setNavigator(true);
        datFechaRegistroCreateInput.setEffect("slideDown");
        datFechaRegistroCreateInput.setPattern("dd/MM/yyyy");
        datFechaRegistroCreateInput.setRequired(true);
        htmlPanelGrid.getChildren().add(datFechaRegistroCreateInput);
        
        Message datFechaRegistroCreateInputMessage = (Message) application.createComponent(Message.COMPONENT_TYPE);
        datFechaRegistroCreateInputMessage.setId("datFechaRegistroCreateInputMessage");
        datFechaRegistroCreateInputMessage.setFor("datFechaRegistroCreateInput");
        datFechaRegistroCreateInputMessage.setDisplay("icon");
        htmlPanelGrid.getChildren().add(datFechaRegistroCreateInputMessage);
        
        HtmlOutputText chrEstadoCreateOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        chrEstadoCreateOutput.setId("chrEstadoCreateOutput");
        chrEstadoCreateOutput.setValue("Chr Estado: * ");
        htmlPanelGrid.getChildren().add(chrEstadoCreateOutput);
        
        InputText chrEstadoCreateInput = (InputText) application.createComponent(InputText.COMPONENT_TYPE);
        chrEstadoCreateInput.setId("chrEstadoCreateInput");
        chrEstadoCreateInput.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.chrEstado}", Character.class));
        chrEstadoCreateInput.setRequired(true);
        htmlPanelGrid.getChildren().add(chrEstadoCreateInput);
        
        Message chrEstadoCreateInputMessage = (Message) application.createComponent(Message.COMPONENT_TYPE);
        chrEstadoCreateInputMessage.setId("chrEstadoCreateInputMessage");
        chrEstadoCreateInputMessage.setFor("chrEstadoCreateInput");
        chrEstadoCreateInputMessage.setDisplay("icon");
        htmlPanelGrid.getChildren().add(chrEstadoCreateInputMessage);
        
        HtmlOutputText desarrolloProteccioncolCreateOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        desarrolloProteccioncolCreateOutput.setId("desarrolloProteccioncolCreateOutput");
        desarrolloProteccioncolCreateOutput.setValue("Desarrollo Proteccioncol: * ");
        htmlPanelGrid.getChildren().add(desarrolloProteccioncolCreateOutput);
        
        InputTextarea desarrolloProteccioncolCreateInput = (InputTextarea) application.createComponent(InputTextarea.COMPONENT_TYPE);
        desarrolloProteccioncolCreateInput.setId("desarrolloProteccioncolCreateInput");
        desarrolloProteccioncolCreateInput.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.desarrolloProteccioncol}", String.class));
        LengthValidator desarrolloProteccioncolCreateInputValidator = new LengthValidator();
        desarrolloProteccioncolCreateInputValidator.setMaximum(45);
        desarrolloProteccioncolCreateInput.addValidator(desarrolloProteccioncolCreateInputValidator);
        desarrolloProteccioncolCreateInput.setRequired(true);
        htmlPanelGrid.getChildren().add(desarrolloProteccioncolCreateInput);
        
        Message desarrolloProteccioncolCreateInputMessage = (Message) application.createComponent(Message.COMPONENT_TYPE);
        desarrolloProteccioncolCreateInputMessage.setId("desarrolloProteccioncolCreateInputMessage");
        desarrolloProteccioncolCreateInputMessage.setFor("desarrolloProteccioncolCreateInput");
        desarrolloProteccioncolCreateInputMessage.setDisplay("icon");
        htmlPanelGrid.getChildren().add(desarrolloProteccioncolCreateInputMessage);
        
        return htmlPanelGrid;
    }

	public HtmlPanelGrid populateEditPanel() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        Application application = facesContext.getApplication();
        ExpressionFactory expressionFactory = application.getExpressionFactory();
        ELContext elContext = facesContext.getELContext();
        
        HtmlPanelGrid htmlPanelGrid = (HtmlPanelGrid) application.createComponent(HtmlPanelGrid.COMPONENT_TYPE);
        
        HtmlOutputText intPersonalIdEditOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        intPersonalIdEditOutput.setId("intPersonalIdEditOutput");
        intPersonalIdEditOutput.setValue("Int Personal Id:   ");
        htmlPanelGrid.getChildren().add(intPersonalIdEditOutput);
        
        AutoComplete intPersonalIdEditInput = (AutoComplete) application.createComponent(AutoComplete.COMPONENT_TYPE);
        intPersonalIdEditInput.setId("intPersonalIdEditInput");
        intPersonalIdEditInput.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.intPersonalId}", Personal.class));
        intPersonalIdEditInput.setCompleteMethod(expressionFactory.createMethodExpression(elContext, "#{desarrolloProteccionBean.completeIntPersonalId}", List.class, new Class[] { String.class }));
        intPersonalIdEditInput.setDropdown(true);
        intPersonalIdEditInput.setValueExpression("var", expressionFactory.createValueExpression(elContext, "intPersonalId", String.class));
        intPersonalIdEditInput.setValueExpression("itemLabel", expressionFactory.createValueExpression(elContext, "#{intPersonalId.strNombre} #{intPersonalId.strApellidoPaterno} #{intPersonalId.strApellidoMaterno} #{intPersonalId.strUsuario}", String.class));
        intPersonalIdEditInput.setValueExpression("itemValue", expressionFactory.createValueExpression(elContext, "#{intPersonalId}", Personal.class));
        intPersonalIdEditInput.setConverter(new PersonalConverter());
        intPersonalIdEditInput.setRequired(false);
        htmlPanelGrid.getChildren().add(intPersonalIdEditInput);
        
        Message intPersonalIdEditInputMessage = (Message) application.createComponent(Message.COMPONENT_TYPE);
        intPersonalIdEditInputMessage.setId("intPersonalIdEditInputMessage");
        intPersonalIdEditInputMessage.setFor("intPersonalIdEditInput");
        intPersonalIdEditInputMessage.setDisplay("icon");
        htmlPanelGrid.getChildren().add(intPersonalIdEditInputMessage);
        
        HtmlOutputText intProteccionIdEditOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        intProteccionIdEditOutput.setId("intProteccionIdEditOutput");
        intProteccionIdEditOutput.setValue("Int Proteccion Id:   ");
        htmlPanelGrid.getChildren().add(intProteccionIdEditOutput);
        
        AutoComplete intProteccionIdEditInput = (AutoComplete) application.createComponent(AutoComplete.COMPONENT_TYPE);
        intProteccionIdEditInput.setId("intProteccionIdEditInput");
        intProteccionIdEditInput.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.intProteccionId}", Proteccion.class));
        intProteccionIdEditInput.setCompleteMethod(expressionFactory.createMethodExpression(elContext, "#{desarrolloProteccionBean.completeIntProteccionId}", List.class, new Class[] { String.class }));
        intProteccionIdEditInput.setDropdown(true);
        intProteccionIdEditInput.setValueExpression("var", expressionFactory.createValueExpression(elContext, "intProteccionId", String.class));
        intProteccionIdEditInput.setValueExpression("itemLabel", expressionFactory.createValueExpression(elContext, "#{intProteccionId.datFechaInicio} #{intProteccionId.datFechaFin} #{intProteccionId.strObservaciones} #{intProteccionId.chrEstado}", String.class));
        intProteccionIdEditInput.setValueExpression("itemValue", expressionFactory.createValueExpression(elContext, "#{intProteccionId}", Proteccion.class));
        intProteccionIdEditInput.setConverter(new ProteccionConverter());
        intProteccionIdEditInput.setRequired(false);
        htmlPanelGrid.getChildren().add(intProteccionIdEditInput);
        
        Message intProteccionIdEditInputMessage = (Message) application.createComponent(Message.COMPONENT_TYPE);
        intProteccionIdEditInputMessage.setId("intProteccionIdEditInputMessage");
        intProteccionIdEditInputMessage.setFor("intProteccionIdEditInput");
        intProteccionIdEditInputMessage.setDisplay("icon");
        htmlPanelGrid.getChildren().add(intProteccionIdEditInputMessage);
        
        HtmlOutputText strDescripcionEditOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        strDescripcionEditOutput.setId("strDescripcionEditOutput");
        strDescripcionEditOutput.setValue("Str Descripcion: * ");
        htmlPanelGrid.getChildren().add(strDescripcionEditOutput);
        
        InputTextarea strDescripcionEditInput = (InputTextarea) application.createComponent(InputTextarea.COMPONENT_TYPE);
        strDescripcionEditInput.setId("strDescripcionEditInput");
        strDescripcionEditInput.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.strDescripcion}", String.class));
        LengthValidator strDescripcionEditInputValidator = new LengthValidator();
        strDescripcionEditInputValidator.setMaximum(200);
        strDescripcionEditInput.addValidator(strDescripcionEditInputValidator);
        strDescripcionEditInput.setRequired(true);
        htmlPanelGrid.getChildren().add(strDescripcionEditInput);
        
        Message strDescripcionEditInputMessage = (Message) application.createComponent(Message.COMPONENT_TYPE);
        strDescripcionEditInputMessage.setId("strDescripcionEditInputMessage");
        strDescripcionEditInputMessage.setFor("strDescripcionEditInput");
        strDescripcionEditInputMessage.setDisplay("icon");
        htmlPanelGrid.getChildren().add(strDescripcionEditInputMessage);
        
        HtmlOutputText datFechaRegistroEditOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        datFechaRegistroEditOutput.setId("datFechaRegistroEditOutput");
        datFechaRegistroEditOutput.setValue("Dat Fecha Registro: * ");
        htmlPanelGrid.getChildren().add(datFechaRegistroEditOutput);
        
        Calendar datFechaRegistroEditInput = (Calendar) application.createComponent(Calendar.COMPONENT_TYPE);
        datFechaRegistroEditInput.setId("datFechaRegistroEditInput");
        datFechaRegistroEditInput.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.datFechaRegistro}", Date.class));
        datFechaRegistroEditInput.setNavigator(true);
        datFechaRegistroEditInput.setEffect("slideDown");
        datFechaRegistroEditInput.setPattern("dd/MM/yyyy");
        datFechaRegistroEditInput.setRequired(true);
        htmlPanelGrid.getChildren().add(datFechaRegistroEditInput);
        
        Message datFechaRegistroEditInputMessage = (Message) application.createComponent(Message.COMPONENT_TYPE);
        datFechaRegistroEditInputMessage.setId("datFechaRegistroEditInputMessage");
        datFechaRegistroEditInputMessage.setFor("datFechaRegistroEditInput");
        datFechaRegistroEditInputMessage.setDisplay("icon");
        htmlPanelGrid.getChildren().add(datFechaRegistroEditInputMessage);
        
        HtmlOutputText chrEstadoEditOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        chrEstadoEditOutput.setId("chrEstadoEditOutput");
        chrEstadoEditOutput.setValue("Chr Estado: * ");
        htmlPanelGrid.getChildren().add(chrEstadoEditOutput);
        
        InputText chrEstadoEditInput = (InputText) application.createComponent(InputText.COMPONENT_TYPE);
        chrEstadoEditInput.setId("chrEstadoEditInput");
        chrEstadoEditInput.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.chrEstado}", Character.class));
        chrEstadoEditInput.setRequired(true);
        htmlPanelGrid.getChildren().add(chrEstadoEditInput);
        
        Message chrEstadoEditInputMessage = (Message) application.createComponent(Message.COMPONENT_TYPE);
        chrEstadoEditInputMessage.setId("chrEstadoEditInputMessage");
        chrEstadoEditInputMessage.setFor("chrEstadoEditInput");
        chrEstadoEditInputMessage.setDisplay("icon");
        htmlPanelGrid.getChildren().add(chrEstadoEditInputMessage);
        
        HtmlOutputText desarrolloProteccioncolEditOutput = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        desarrolloProteccioncolEditOutput.setId("desarrolloProteccioncolEditOutput");
        desarrolloProteccioncolEditOutput.setValue("Desarrollo Proteccioncol: * ");
        htmlPanelGrid.getChildren().add(desarrolloProteccioncolEditOutput);
        
        InputTextarea desarrolloProteccioncolEditInput = (InputTextarea) application.createComponent(InputTextarea.COMPONENT_TYPE);
        desarrolloProteccioncolEditInput.setId("desarrolloProteccioncolEditInput");
        desarrolloProteccioncolEditInput.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.desarrolloProteccioncol}", String.class));
        LengthValidator desarrolloProteccioncolEditInputValidator = new LengthValidator();
        desarrolloProteccioncolEditInputValidator.setMaximum(45);
        desarrolloProteccioncolEditInput.addValidator(desarrolloProteccioncolEditInputValidator);
        desarrolloProteccioncolEditInput.setRequired(true);
        htmlPanelGrid.getChildren().add(desarrolloProteccioncolEditInput);
        
        Message desarrolloProteccioncolEditInputMessage = (Message) application.createComponent(Message.COMPONENT_TYPE);
        desarrolloProteccioncolEditInputMessage.setId("desarrolloProteccioncolEditInputMessage");
        desarrolloProteccioncolEditInputMessage.setFor("desarrolloProteccioncolEditInput");
        desarrolloProteccioncolEditInputMessage.setDisplay("icon");
        htmlPanelGrid.getChildren().add(desarrolloProteccioncolEditInputMessage);
        
        return htmlPanelGrid;
    }

	public HtmlPanelGrid populateViewPanel() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        Application application = facesContext.getApplication();
        ExpressionFactory expressionFactory = application.getExpressionFactory();
        ELContext elContext = facesContext.getELContext();
        
        HtmlPanelGrid htmlPanelGrid = (HtmlPanelGrid) application.createComponent(HtmlPanelGrid.COMPONENT_TYPE);
        
        HtmlOutputText intPersonalIdLabel = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        intPersonalIdLabel.setId("intPersonalIdLabel");
        intPersonalIdLabel.setValue("Int Personal Id:   ");
        htmlPanelGrid.getChildren().add(intPersonalIdLabel);
        
        HtmlOutputText intPersonalIdValue = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        intPersonalIdValue.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.intPersonalId}", Personal.class));
        intPersonalIdValue.setConverter(new PersonalConverter());
        htmlPanelGrid.getChildren().add(intPersonalIdValue);
        
        HtmlOutputText intProteccionIdLabel = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        intProteccionIdLabel.setId("intProteccionIdLabel");
        intProteccionIdLabel.setValue("Int Proteccion Id:   ");
        htmlPanelGrid.getChildren().add(intProteccionIdLabel);
        
        HtmlOutputText intProteccionIdValue = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        intProteccionIdValue.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.intProteccionId}", Proteccion.class));
        intProteccionIdValue.setConverter(new ProteccionConverter());
        htmlPanelGrid.getChildren().add(intProteccionIdValue);
        
        HtmlOutputText strDescripcionLabel = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        strDescripcionLabel.setId("strDescripcionLabel");
        strDescripcionLabel.setValue("Str Descripcion:   ");
        htmlPanelGrid.getChildren().add(strDescripcionLabel);
        
        InputTextarea strDescripcionValue = (InputTextarea) application.createComponent(InputTextarea.COMPONENT_TYPE);
        strDescripcionValue.setId("strDescripcionValue");
        strDescripcionValue.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.strDescripcion}", String.class));
        strDescripcionValue.setReadonly(true);
        strDescripcionValue.setDisabled(true);
        htmlPanelGrid.getChildren().add(strDescripcionValue);
        
        HtmlOutputText datFechaRegistroLabel = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        datFechaRegistroLabel.setId("datFechaRegistroLabel");
        datFechaRegistroLabel.setValue("Dat Fecha Registro:   ");
        htmlPanelGrid.getChildren().add(datFechaRegistroLabel);
        
        HtmlOutputText datFechaRegistroValue = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        datFechaRegistroValue.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.datFechaRegistro}", Date.class));
        DateTimeConverter datFechaRegistroValueConverter = (DateTimeConverter) application.createConverter(DateTimeConverter.CONVERTER_ID);
        datFechaRegistroValueConverter.setPattern("dd/MM/yyyy");
        datFechaRegistroValue.setConverter(datFechaRegistroValueConverter);
        htmlPanelGrid.getChildren().add(datFechaRegistroValue);
        
        HtmlOutputText chrEstadoLabel = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        chrEstadoLabel.setId("chrEstadoLabel");
        chrEstadoLabel.setValue("Chr Estado:   ");
        htmlPanelGrid.getChildren().add(chrEstadoLabel);
        
        HtmlOutputText chrEstadoValue = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        chrEstadoValue.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.chrEstado}", String.class));
        htmlPanelGrid.getChildren().add(chrEstadoValue);
        
        HtmlOutputText desarrolloProteccioncolLabel = (HtmlOutputText) application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        desarrolloProteccioncolLabel.setId("desarrolloProteccioncolLabel");
        desarrolloProteccioncolLabel.setValue("Desarrollo Proteccioncol:   ");
        htmlPanelGrid.getChildren().add(desarrolloProteccioncolLabel);
        
        InputTextarea desarrolloProteccioncolValue = (InputTextarea) application.createComponent(InputTextarea.COMPONENT_TYPE);
        desarrolloProteccioncolValue.setId("desarrolloProteccioncolValue");
        desarrolloProteccioncolValue.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{desarrolloProteccionBean.desarrolloProteccion.desarrolloProteccioncol}", String.class));
        desarrolloProteccioncolValue.setReadonly(true);
        desarrolloProteccioncolValue.setDisabled(true);
        htmlPanelGrid.getChildren().add(desarrolloProteccioncolValue);
        
        return htmlPanelGrid;
    }

	public DesarrolloProteccion getDesarrolloProteccion() {
        if (desarrolloProteccion == null) {
            desarrolloProteccion = new DesarrolloProteccion();
        }
        return desarrolloProteccion;
    }

	public void setDesarrolloProteccion(DesarrolloProteccion desarrolloProteccion) {
        this.desarrolloProteccion = desarrolloProteccion;
    }

	public List<Personal> completeIntPersonalId(String query) {
        List<Personal> suggestions = new ArrayList<Personal>();
        for (Personal personal : personalService.findAllPersonals()) {
            String personalStr = String.valueOf(personal.getStrNombre() +  " "  + personal.getStrApellidoPaterno() +  " "  + personal.getStrApellidoMaterno() +  " "  + personal.getStrUsuario());
            if (personalStr.toLowerCase().startsWith(query.toLowerCase())) {
                suggestions.add(personal);
            }
        }
        return suggestions;
    }

	public List<Proteccion> completeIntProteccionId(String query) {
        List<Proteccion> suggestions = new ArrayList<Proteccion>();
        for (Proteccion proteccion : proteccionService.findAllProteccions()) {
            String proteccionStr = String.valueOf(proteccion.getDatFechaInicio() +  " "  + proteccion.getDatFechaFin() +  " "  + proteccion.getStrObservaciones() +  " "  + proteccion.getChrEstado());
            if (proteccionStr.toLowerCase().startsWith(query.toLowerCase())) {
                suggestions.add(proteccion);
            }
        }
        return suggestions;
    }

	public String onEdit() {
        return null;
    }

	public boolean isCreateDialogVisible() {
        return createDialogVisible;
    }

	public void setCreateDialogVisible(boolean createDialogVisible) {
        this.createDialogVisible = createDialogVisible;
    }

	public String displayList() {
        createDialogVisible = false;
        findAllDesarrolloProteccions();
        return "desarrolloProteccion";
    }

	public String displayCreateDialog() {
        desarrolloProteccion = new DesarrolloProteccion();
        createDialogVisible = true;
        return "desarrolloProteccion";
    }

	public String persist() {
        String message = "";
        if (desarrolloProteccion.getIntDesarrolloProteccionId() != null) {
            desarrolloProteccionService.updateDesarrolloProteccion(desarrolloProteccion);
            message = "Successfully updated";
        } else {
            desarrolloProteccionService.saveDesarrolloProteccion(desarrolloProteccion);
            message = "Successfully created";
        }
        RequestContext context = RequestContext.getCurrentInstance();
        context.execute("createDialog.hide()");
        context.execute("editDialog.hide()");
        
        FacesMessage facesMessage = new FacesMessage(message);
        FacesContext.getCurrentInstance().addMessage(null, facesMessage);
        reset();
        return findAllDesarrolloProteccions();
    }

	public String delete() {
        desarrolloProteccionService.deleteDesarrolloProteccion(desarrolloProteccion);
        FacesMessage facesMessage = new FacesMessage("Successfully deleted");
        FacesContext.getCurrentInstance().addMessage(null, facesMessage);
        reset();
        return findAllDesarrolloProteccions();
    }

	public void reset() {
        desarrolloProteccion = null;
        createDialogVisible = false;
    }

	public void handleDialogClose(CloseEvent event) {
        reset();
    }
}
